package _1007.genericity;

// Type/Template, K: key, V:value,  E:element
public class MyList<T> {
	T[] values = (T[]) new Object[10];
	int size; 

	public void add(T obj) {
		values[size] = obj;
		size ++;
	}
	
	public T get(int index) {
		if (index < 0 || index >= size)
			throw new ArrayIndexOutOfBoundsException();
		return values[index];
	}
	
	public static void main(String[] args) {
		MyList<Integer> list2 = new MyList<Integer>();
		list2.add(123);
		list2.add(456);
		list2.add(123);
		
		MyList<String> list = new MyList<String>();
		list.add("abc");
		list.add("abc");
		list.add("abc");
		
		MyList<Boolean> list3 = new MyList<>();
		list3.add(true);		
		
		System.out.println(list.size);
		System.out.println(list.get(2));
	}
}
